package com.briup.ch11;

import java.io.File;
import java.io.IOException;

/**
 * @Author briup-adam
 * @Date 2023/10/18 上午10:14
 * @Description 文件对象的创建
 **/

public class FileDemo {
    public static void main(String[] args) {

        File file = new File("/Users/adam/code/idea-workspace/bttc-code/02code/src/十年.txt");
        //获取基础文件名
        String name = file.getName();
        System.out.println(name);
        //获取文件字节数
        long length = file.length();
        System.out.println(length);
//        判断该文件对象的类型是不是普通文件
        System.out.println(file.isFile());
        //        判断该文件对象的类型是不是目录文件
        System.out.println(file.isDirectory());
        //        判断该文件对象的类型是不是隐藏文件
        System.out.println(file.isHidden());
        //        判断文件是否可读
        System.out.println(file.canRead());
        //        判断文件是否可写
        System.out.println(file.canWrite());
        //        判断文件是否可执行
        System.out.println(file.canExecute());

        //设置文件可执行
        file.setExecutable(true);

        //删除文件
        file.delete();

        System.out.println("----------------------");

        File file4 = new File("/Users/adam/code/idea-workspace/bttc-code");
        listFile(file4);

//        //相对路径  相对与当前项目的根目录  如果文件路径不存在 报错
//        File file1 = new File("a.txt");
//        try {
//            //根据路径创建新文件  如果文件存在 创建失败 不报错
//            boolean b = file1.createNewFile();
//            System.out.println(b);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        File file2 = new File("02code/dir");
////        创建目录  父目录必须存在的
//        boolean b = file2.mkdir();
//        System.out.println(b);
//        File file3 = new File("03code/dir");
////        创建目录  父目录可以不存在
//        boolean b1 = file3.mkdirs();
//        System.out.println(b1);
//
//        //只能删除空目录 目录下有文件的不允许直接删除
//        file2.delete();
//        //获取目录下的所有文件的名字
//        String[] fileNames = file2.list();
//        for (String fileName : fileNames) {
//            System.out.println(fileName);
//        }
//        //递归删除当前目录下所有文件
//        deleteFile(file2);
//        //判断文件是否存在
//        System.out.println(file2.exists());
//
//
////        file2.deleteOnExit();

    }
    //使用递归删除指定目录下的所有文件
    public   static  void  deleteFile(File  file){
        //获取目录下的所有文件对象
        File[] files = file.listFiles();
        for (File file4 : files) {
            if (file4.isFile())
                file4.delete();
            else
                deleteFile(file4);

        }
        file.delete();
    }

    public static  void  listFile(File file){
        if (file.isDirectory()){
            File[] files = file.listFiles();
            for (File file1 : files) {
                if (file1.isDirectory())
                    listFile(file1);
                else
                   if(file1.getName().contains(".java"))
                       System.out.println(file1.getName());
            }

        }else
            throw  new RuntimeException("小老弟怎么个事   传的不是目录");
    }
}
